package com.imti.mall.product.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.github.pagehelper.PageHelper;
import com.imti.mall.common.Api.CommonPage;
import com.imti.mall.common.Api.CommonResult;
import com.imti.mall.model.pms.dto.PmsProductCategoryResult;
import com.imti.mall.model.pms.pojo.PmsProductCategory;
import com.imti.mall.model.pms.vo.PmsProductCategoryVo;
import com.imti.mall.product.service.PmsProductCategoryService;
import feign.Param;
import io.swagger.models.auth.In;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;


@RestController
@RequestMapping("/api/v1/product/category")
public class PmsProductCategoryController {

    @Resource
    private PmsProductCategoryService pmsProductCategoryService;

    @PostMapping("/findPmsProductCategory")
    public CommonResult findPmsProductCategory(Integer parentId, Integer pageSize, Integer pageNum){
        PageHelper.startPage(pageNum,pageSize);
        return CommonResult.success(CommonPage.restPage(pmsProductCategoryService.findPmsProductCategory(parentId)));
    }

    @GetMapping("/getPmsProductCategoryById/{id}")
    public CommonResult getPmsProductCategoryById(@PathVariable("id") Integer id){
        return CommonResult.success(pmsProductCategoryService.getPmsProductCategoryById(id));
    }

   /* @PostMapping("/updatePmsProductCategory")
    public CommonResult updatePmsProductCategory(@RequestBody Integer id, PmsProductCategoryVo pmsProductCategoryVo){

        return  null;
    }*/

   @PostMapping("/updateStatus")
//    public  CommonResult updatePmsProductCategory(@RequestParam("id") Integer id,@RequestParam("navStatus") Integer navStatus,@RequestParam("showStatus") Integer showStatus, @RequestParam("pmsProductCategoryVo") PmsProductCategoryVo pmsProductCategoryVo){
    public  CommonResult updateStatus(PmsProductCategoryVo pmsProductCategoryVo){
//        return CommonResult.success(pmsProductCategoryService.updatePmsProductCategory(id,navStatus,showStatus,pmsProductCategoryVo));

       LambdaUpdateChainWrapper<PmsProductCategory> pmsProductCategoryLambdaUpdateChainWrapper = pmsProductCategoryService.lambdaUpdate();
       boolean update = false;
       if (null != pmsProductCategoryVo && null != pmsProductCategoryVo.getNavStatus() && null != pmsProductCategoryVo.getName()){
           update = pmsProductCategoryLambdaUpdateChainWrapper.set(null != pmsProductCategoryVo && null != pmsProductCategoryVo.getNavStatus(), PmsProductCategory::getNavStatus, pmsProductCategoryVo.getNavStatus())
                   .eq(PmsProductCategory::getId, pmsProductCategoryVo.getId())
                   .update();
       } else if (null != pmsProductCategoryVo && null != pmsProductCategoryVo.getShowStatus() && null != pmsProductCategoryVo.getName()) {
           update = pmsProductCategoryLambdaUpdateChainWrapper.set(null != pmsProductCategoryVo && null != pmsProductCategoryVo.getShowStatus(), PmsProductCategory::getShowStatus, pmsProductCategoryVo.getShowStatus())
                   .eq(PmsProductCategory::getId, pmsProductCategoryVo.getId())
                   .update();
       }


       return CommonResult.success(update);
    }

    @GetMapping("/deletePmsProductCategory/{id}")
    public CommonResult deletePmsProductCategory(@PathVariable("id") Integer id){
        return  CommonResult.success(pmsProductCategoryService.deleteProductCate(id));
    }
    @PostMapping("/addPmsProductCategory")
    public  CommonResult createProductCate(@RequestBody PmsProductCategoryVo pmsProductCategoryVo){
       return CommonResult.success(pmsProductCategoryService.createProductCate(pmsProductCategoryVo));
    }

    @PostMapping("/updatePmsProductCategory")
    public CommonResult updatePmsProductCategory(@RequestBody PmsProductCategoryVo pmsProductCategoryVo){
       return  CommonResult.success(pmsProductCategoryService.updatePmsProductCategory(pmsProductCategoryVo));
    }

    @RequestMapping ("/findPmsProductCategoryBYLever")
    public  CommonResult fetchListWithChildren(){
       //PageHelper.startPage(pageNum,pageSize);
       return CommonResult.success(pmsProductCategoryService.fetchListWithChildren()) ;
    }

}
